<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js"></script>
    <link rel="stylesheet" href="https://hzqyihui.github.io/media/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://hzqyihui.github.io/media/css/live2d.css">
    <link rel="stylesheet" href="https://hzqyihui.github.io/styles/main.css">
    <script src="https://hzqyihui.github.io/media/js/valine.min.js"></script>
    <script src="https://sdk.jinrishici.com/v2/browser/jinrishici.js" charset="utf-8"></script>
    <meta name="description" content="当能力和欲望不匹配时，人会极度痛苦。" />
    <meta http-equiv="x-pjax-version" content="v123">
    <title>MaxHua's Note</title>
</head>


<body>
    <div id="content">
        <div class="nav-large">
            <div class="row">
                <!-- ----------------左侧菜单栏html 👇-------------------------------------->
                
                <!--------------- pc端菜单栏👇 ---------------->
                <div class="side"><head>
    <link rel="stylesheet" href="https://hzqyihui.github.io/media/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://hzqyihui.github.io/styles/main.css">
    
    <link rel="stylesheet" href="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.18.1/build/styles/rainbow.min.css">
    
    <script src="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.18.1/build/highlight.min.js"></script>
    <script src="https://cdn.jsdelivr.net/gh/850552586/ericamcdn@0.1/js/clipboard.min.js"></script>
    <link rel="stylesheet" href="https://hzqyihui.github.io/media/css/live2d.css">
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script>
    <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
    <link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/5.13.1/css/all.min.css" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <!-- fancybox -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css" />
    <script src="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script>


    <!--------- 数学公式👇---- -->
    
    <!--------- 数学公式👆----------------- -->
    <!--------- daovocie功能👇 ------------------->
    
    <script type="text/javascript">
        window.$crisp = [];
        window.CRISP_WEBSITE_ID = "6fbd6157-accf-49b0-9398-56a347b943f8";
        (function () {
            d = document;
            s = d.createElement("script");
            s.src = "https://client.crisp.chat/l.js";
            s.async = 1;
            d.getElementsByTagName("head")[0].appendChild(s);
        })();
    </script>
    
    <!--------- daovocie功能👆 ------------------->
    <!-- -----------------twikoo评论系统引入👇 --------->
    <script src="https://cdn.jsdelivr.net/npm/twikoo@1.3.1/dist/twikoo.all.min.js"></script>
    <!-- -----------------twikoo评论系统引入👆 --------->
    <!---------------- leancloud api 功能依赖引入👇 -------->
    <script src="https://cdn.jsdelivr.net/npm/leancloud-storage@3.13.0/dist/av-min.js"></script>
    <!---------------- leancloud api 功能依赖引入👆 -------->
    <!------------------ valine评论系统引入👇 ------------------>
    <script src="https://hzqyihui.github.io/media/js/valine.min.js"></script>
    <!------------------ valine评论系统引入👆 ------------------>
    <!---------------- 今日诗词api功能依赖👇 ----------------------->
    <script src="https://sdk.jinrishici.com/v2/browser/jinrishici.js" charset="utf-8"></script>
    <!---------------- 今日诗词api功能依赖👆 ----------------------->
    <!---------------- 今日诗词api功能依赖👇 ----------------------->
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ispeak-bber/ispeak-bber.min.js" charset="utf-8"></script>
    <!---------------- 哔哔功能依赖👆 ----------------------->


</head>

<style>
    body {
        overflow-x: hidden;
        height: 100vh;
        overflow-y: scroll;
        cursor: url("https://hzqyihui.github.io/media/images/mouse_cursor.png"), auto
    }
</style>

<body>
    <!--=------ 页面加载动态画面👇 --------------->
    <div class="pjaxloading" onclick="pjaxloadingClose()">
        <div class="loadingbackground"></div>
        <div id="loading-aname">
            <div class="loading-aname">
            </div>
        </div>
    </div>
    <!--=------ 页面加载动态画面👆 --------------->

    <!--------------- 左侧菜单栏👇 ------------------------>
    
    <div id=side>
        <div class="r_m_div">
            <a onclick="showAaplayer()"><i style="font-size: 20px;"><img
                        src='https://hzqyihui.github.io/media/images/music.png' alt="音乐播放器" class="musicbtn"></i></a>
        </div>
        <div class="avatar-border">
            <img src="https://hzqyihui.github.io/images/avatar.png?v=1665303694187" class="avatar">
        </div>
        <div class="sitename">MaxHua&#39;s Note</div>
        <span class="description" data-text='["当能力和欲望不匹配时，人会极度痛苦。"]'>&nbsp;</span>
        <div class="siteinfocontainer">
            <span class="siteinfo">文章</span>
            <span class="siteinfo">标签</span>
        </div>
        <div class="siteinfocontainer">
            <span class="siteinfo" id="siteinfo-postsnum"></span>
            <span class="siteinfo">60</span>
        </div>
        
        <div class="search">
            <!-- <input type="text" class="search-input" placeholder="标题搜索(●'◡'●)" /> -->
            <input type="text" class="search-input" placeholder="标题搜索 ⚆_⚆ つ♡">
            <div class="search-results"></div>
        </div>
        
    <div class="share-button">
        <span>Look At Me</span>
        
        <a href="https://github.com/hzqyihui" target="_blank"><i style="font-size: 20px;"><img class="icon"
                    src="https://hzqyihui.github.io/media/images/github.png" alt=""></i></a>
        
        
        <a onclick="showqq()"><i style="font-size: 20px;"><img class="icon"
                    src="https://hzqyihui.github.io/media/images/QQ.png" alt=""></i></a>
        
        
        <a href="https://zhihu.com/people/hzq_yihui" target="_blank"><i style="font-size: 20px;"><img class="icon"
                    src="https://hzqyihui.github.io/media/images/zh.png" alt=""></i></a>
        
        
        
        
        
        <a href="https://music.163.com/#/user/home?id=1318641230" target="_blank"><i style="font-size: 20px;"><img class="icon"
                    src="https://hzqyihui.github.io/media/images/wyy.png" alt=""></i></a>
        
        
    </div>
    <div id="qq" style="display:none">77430203</div>
    <!------------ 加载菜单按钮👇 ------------------------->
    <div class="menucontainer">
        
        
        <div class="mchocie description">
            <a data-pjax href="/" class="menubutton" style="margin-right: 15px;">
                <i><img class="icon menuicon" src="" alt="首页"></i>&nbsp;<span
                    data-text="首页">首页</span>
            </a>
        </div>
        
        
        
        <div class="mchocie description">
            <a data-pjax href="/archives" class="menubutton" style="margin-right: 15px;">
                <i><img class="icon menuicon" src="" alt="归档"></i>&nbsp;<span
                    data-text="归档">归档</span>
            </a>
        </div>
        
        
        
        <div class="mchocie description">
            <a data-pjax href="/tags" class="menubutton" style="margin-right: 15px;">
                <i><img class="icon menuicon" src="" alt="标签"></i>&nbsp;<span
                    data-text="标签">标签</span>
            </a>
        </div>
        
        
        
        <div class="mchocie description">
            <a data-pjax href="/post/about" class="menubutton" style="margin-right: 15px;">
                <i><img class="icon menuicon" src="" alt="关于"></i>&nbsp;<span
                    data-text="关于">关于</span>
            </a>
        </div>
        
        

        
        <div class="mchocie description">
            <a data-pjax href="https://hzqyihui.github.io/talk" class="menubutton" style="margin-right: 15px;">
                <i><img class="icon menuicon" src="" alt="说说"></i>&nbsp;<span data-text="说说">说说</span>
            </a>
        </div>
        
        
        
        <div class="mchocie description">
            <a data-pjax href="https://hzqyihui.github.io/friends" class="menubutton" style="margin-right: 15px;">
                <i><img class="icon menuicon" src="" alt="友人帐"></i>&nbsp;<span data-text="友人帐">友人帐</span>
            </a>
        </div>
        
        <!--  -->
    </div>
    <!------------ 加载菜单按钮👆 ------------------------->
    <hr>
    <style>
    .copyright {
        font-size: 15px;
        color: #d9d9d9;
    }


    @media screen and (min-width: 1200px) {
        .foot {
            width: 100%;
            height: 130px;
        }
    }

    @media screen and (max-width: 1200px) {
        .foot {
            display: none;
        }
    }
</style>

<body>
    <div class="foot">
        <div id="footinfo">Powered by <a href="https://github.com/hzqyihui/" target="_blank">Maxhua</a> | Theme: <a
                href="https://github.com/850552586/gridea-theme-fog">Fog</a>
            <div>
                
                <div id="sitegotimeDate">载入天数...</div>
                <div id="sitegotimes">载入时分秒...</div>
                <div id="cussitetime" style="display:none">02/22/2018</div>
                
            </div>
            <div>
                
            </div>
            <div class="copyright" style="color:white;text-align: center;">
            </div>
        </div>



    </div>
</body>

<script>
    //----------------------站点运行时间
    var now = new Date();

    function createtime() {
        var sitegotime = document.getElementById("cussitetime").innerHTML + " 00:00:00";
        var grt = new Date(sitegotime); //此处修改你的建站时间或者网站上线时间 
        now.setTime(now.getTime() + 250);
        days = (now - grt) / 1000 / 60 / 60 / 24;
        dnum = Math.floor(days);
        hours = (now - grt) / 1000 / 60 / 60 - (24 * dnum);
        hnum = Math.floor(hours);
        if (String(hnum).length == 1) {
            hnum = "0" + hnum;
        }
        minutes = (now - grt) / 1000 / 60 - (24 * 60 * dnum) - (60 * hnum);
        mnum = Math.floor(minutes);
        if (String(mnum).length == 1) {
            mnum = "0" + mnum;
        }
        seconds = (now - grt) / 1000 - (24 * 60 * 60 * dnum) - (60 * 60 * hnum) - (60 * mnum);
        snum = Math.round(seconds);
        if (String(snum).length == 1) {
            snum = "0" + snum;
        }
        document.getElementById("sitegotimeDate").innerHTML = "本站已安全运行 " + dnum + " 天 ";
        document.getElementById("sitegotimes").innerHTML = hnum + " 小时 " + mnum + " 分 " + snum + " 秒";
    }

    let intervalId = setInterval("createtime()", 250);
</script>

    </div>

    <img class="moon" src="https://hzqyihui.github.io/media/images/moon.png" onclick="moonlight()">
    <script src="https://hzqyihui.github.io/media/js/wordshow.js"></script>
    
    <!--------------- 左侧菜单栏👆 ------------------------>

    <!----------------- 顶部菜单栏👇 ------------------------>
    
    <!----------------- 顶部菜单栏👆 ------------------------>

<!--核心功能加载-->
<script src="https://hzqyihui.github.io/media/js/mainfunc.js"></script>

<!------------- Fog1.0版本彩蛋👇 -------------->
    <!-- <section id="terrestrial" class="popup">
        <a href="#" class="back">&lt; back</a>
    </section>

    <div class="flycontainer">
        <div class="flyword">御风飞行中...</div>
    </div>

    <script>
        $("#fog_go").click(function(){fog_go()});
        async function fog_go(){
            $(".bars").hide()
            $("#live2d").hide()
            await sleep(3000);
            $(".flycontainer").css("display","flex");
            $(".popup").fadeOut(500)
            await sleep(2000);
            var sitename = "MaxHua&#39;s Note";
            getFogUser(sitename);
        }

        function fog_goregis(){
            var sitename = "MaxHua&#39;s Note";
            var siteurl = "https://hzqyihui.github.io";
            regisFogUser(sitename,siteurl);
        }
        fog_goregis();
    </script> -->
<!------------- Fog1.0版本彩蛋👆 -------------->
<script>
    function change_topmenu(){
        tmcolor = "black"
        tsnamecolor = "antiquewhite"
        $(".navbar-inverse .navbar-nav>li>a").css("color",tmcolor)
        $(".navbar-inverse .navbar-brand").css("color",tsnamecolor)
        $(".navbar-fixed-top").css("border-radius","0 0 10px 10px")
    }
</script>

<!------ 根据自定义配置声明变量👇 --------------------->
    
    <script>
        var postnumChoice = true
    </script>
    
    
    <script>
        var shareChoice = true
    </script>
    
    
    <script>
        var donateChoice = true
    </script>
    
    
    <script>
        var searchChoice = true
    </script>
    
    <script>let postsnum = 0;</script>
    <div id="side-posttitle" style="display: none;">
    
    
    Go语言Sync包的锁
    <script>
        postsnum += 1
    </script>
    
    
    
    
    
    Nacos安装和配置：
    <script>
        postsnum += 1
    </script>
    
    
    
    Nacos基本使用：
    <script>
        postsnum += 1
    </script>
    
    
    
    布隆过滤器
    <script>
        postsnum += 1
    </script>
    
    
    
    brew换源：
    <script>
        postsnum += 1
    </script>
    
    
    
    jenkins的安装和配置：
    <script>
        postsnum += 1
    </script>
    
    
    
    Kong怎么和Consul配套使用？
    <script>
        postsnum += 1
    </script>
    
    
    
    Kong的安装和配置：
    <script>
        postsnum += 1
    </script>
    
    
    
    什么是API网关？
    <script>
        postsnum += 1
    </script>
    
    
    
    RocketMQ Go 消息使用：
    <script>
        postsnum += 1
    </script>
    
    
    
    服务雪崩
    <script>
        postsnum += 1
    </script>
    
    
    
    gRPC的超时和重试
    <script>
        postsnum += 1
    </script>
    
    
    
    常见的幂等性解决方案
    <script>
        postsnum += 1
    </script>
    
    
    
    Rocket基本概念：
    <script>
        postsnum += 1
    </script>
    
    
    
    Rocket安装和配置
    <script>
        postsnum += 1
    </script>
    
    
    
    常见分布式事务解决方案：
    <script>
        postsnum += 1
    </script>
    
    
    
    CAP和BASE理论：
    <script>
        postsnum += 1
    </script>
    
    
    
    事务和分布式事务：
    <script>
        postsnum += 1
    </script>
    
    
    
    ElasticSearch学习：
    <script>
        postsnum += 1
    </script>
    
    
    
    什么是elasticsearch
    <script>
        postsnum += 1
    </script>
    
    
    
    Redis 的 RedLock：
    <script>
        postsnum += 1
    </script>
    
    
    
    常见的分布式锁的实现方案：
    <script>
        postsnum += 1
    </script>
    
    
    
    单机锁
    <script>
        postsnum += 1
    </script>
    
    
    
    Go工具-随机获取可用端口并监听：
    <script>
        postsnum += 1
    </script>
    
    
    
    负载均衡算法：
    <script>
        postsnum += 1
    </script>
    
    
    
    负载均衡策略：
    <script>
        postsnum += 1
    </script>
    
    
    
    JWT集成在Gin框架中
    <script>
        postsnum += 1
    </script>
    
    
    
    Go工具-Viper配置文件管理器
    <script>
        postsnum += 1
    </script>
    
    
    
    二叉树层序遍历
    <script>
        postsnum += 1
    </script>
    
    
    
    二叉树后序遍历
    <script>
        postsnum += 1
    </script>
    
    
    
    二叉树中序遍历
    <script>
        postsnum += 1
    </script>
    
    
    
    二叉树先序遍历
    <script>
        postsnum += 1
    </script>
    
    
    
    Dockerfile 的语法使用：
    <script>
        postsnum += 1
    </script>
    
    
    
    Nginx重写和转发规则：
    <script>
        postsnum += 1
    </script>
    
    
    
    HTTP版本：
    <script>
        postsnum += 1
    </script>
    
    
    
    HTTP请求响应过程：
    <script>
        postsnum += 1
    </script>
    
    
    
    TCP和UDP的区别：
    <script>
        postsnum += 1
    </script>
    
    
    
    插入排序
    <script>
        postsnum += 1
    </script>
    
    
    
    Go工具-proto文件编译
    <script>
        postsnum += 1
    </script>
    
    
    
    二分查找算法
    <script>
        postsnum += 1
    </script>
    
    
    
    sed命令：
    <script>
        postsnum += 1
    </script>
    
    
    
    xargs命令：
    <script>
        postsnum += 1
    </script>
    
    
    
    firewall命令（防火墙）：
    <script>
        postsnum += 1
    </script>
    
    
    
    nohup 命令：
    <script>
        postsnum += 1
    </script>
    
    
    
    安装 FFmpeg：
    <script>
        postsnum += 1
    </script>
    
    
    
    umask命令：
    <script>
        postsnum += 1
    </script>
    
    
    
    shell 笔记：
    <script>
        postsnum += 1
    </script>
    
    
    
    GIT分支与工作流
    <script>
        postsnum += 1
    </script>
    
    
    
    netstat命令：查看端口占用
    <script>
        postsnum += 1
    </script>
    
    
    
    nl命令：带行号查看文件
    <script>
        postsnum += 1
    </script>
    
    
    
    Git奇难杂症：
    <script>
        postsnum += 1
    </script>
    
    
    
    Redis安装笔记
    <script>
        postsnum += 1
    </script>
    
    
    
    排序的稳定性含义：
    <script>
        postsnum += 1
    </script>
    
    
    
    希尔排序
    <script>
        postsnum += 1
    </script>
    
    
    
    SSH开启无密码登录
    <script>
        postsnum += 1
    </script>
    
    
    
    改进版快速排序
    <script>
        postsnum += 1
    </script>
    
    
    
    冒泡排序
    <script>
        postsnum += 1
    </script>
    
    
    
    堆排序
    <script>
        postsnum += 1
    </script>
    
    
    
    选择排序
    <script>
        postsnum += 1
    </script>
    
    
    
    归并排序
    <script>
        postsnum += 1
    </script>
    
    
    
    位运算计算中间值：
    <script>
        postsnum += 1
    </script>
    
    
    
    递归的时间复杂度：
    <script>
        postsnum += 1
    </script>
    
    
    
    对数器
    <script>
        postsnum += 1
    </script>
    
    
    
    stat命令： 查看文件的修改
    <script>
        postsnum += 1
    </script>
    
    
    
    Windows快捷键
    <script>
        postsnum += 1
    </script>
    
    
    
    各类查找命令：
    <script>
        postsnum += 1
    </script>
    
    
    
    Go进阶知识点
    <script>
        postsnum += 1
    </script>
    
    
    
    date命令：
    <script>
        postsnum += 1
    </script>
    
    
    
    find 命令：
    <script>
        postsnum += 1
    </script>
    
    
    
    Linux进程，内存查看
    <script>
        postsnum += 1
    </script>
    
    
    
    Go基础知识点
    <script>
        postsnum += 1
    </script>
    
    
    
    tree命令
    <script>
        postsnum += 1
    </script>
    
    
    
    GOROOT, GOPATH
    <script>
        postsnum += 1
    </script>
    
    
    
    locate 命令：
    <script>
        postsnum += 1
    </script>
    
    
    
    Nginx 安装
    <script>
        postsnum += 1
    </script>
    
    
    
    PHP 知识点分享
    <script>
        postsnum += 1
    </script>
    
    
    
    Zsh 插件安装：
    <script>
        postsnum += 1
    </script>
    
    
    
    Linux系统基本知识点
    <script>
        postsnum += 1
    </script>
    
    
    
    Linux操作提升效率
    <script>
        postsnum += 1
    </script>
    
    
    
    Linux命令操作快捷键
    <script>
        postsnum += 1
    </script>
    
    
    
    YAML语法
    <script>
        postsnum += 1
    </script>
    
    
    
    VIM学习笔记：
    <script>
        postsnum += 1
    </script>
    
    
    
    经典快速排序
    <script>
        postsnum += 1
    </script>
    
    
    
    crontab
    <script>
        postsnum += 1
    </script>
    
    
    
    环境变量etc profile文件解析：
    <script>
        postsnum += 1
    </script>
    
    
    
    Linux etc sudoers文件说明：
    <script>
        postsnum += 1
    </script>
    
    
    
    Linux 用户，用户组相关命令
    <script>
        postsnum += 1
    </script>
    
    
    
    ln命令：对文件做链接，类似Windows的快捷方式
    <script>
        postsnum += 1
    </script>
    
    
    
    df
    <script>
        postsnum += 1
    </script>
    
    
    
    chmod：
    <script>
        postsnum += 1
    </script>
    
    
    
    用户埋点处理，用户行为分析技术：
    <script>
        postsnum += 1
    </script>
    
    
    
    PHP SPL扩展库
    <script>
        postsnum += 1
    </script>
    
    
    
    Beanstalked学习笔记：
    <script>
        postsnum += 1
    </script>
    
    
    
    tar命令：
    <script>
        postsnum += 1
    </script>
    
    
    
    GIT 原理   ：
    <script>
        postsnum += 1
    </script>
    
    
    
    tmux使用
    <script>
        postsnum += 1
    </script>
    
    
    
    Debian9学习笔记：
    <script>
        postsnum += 1
    </script>
    
    
    
    Docker学习笔记
    <script>
        postsnum += 1
    </script>
    
    
    
    在Debian9安装Docker
    <script>
        postsnum += 1
    </script>
    
    
    
    Git学习笔记
    <script>
        postsnum += 1
    </script>
    
    
    
    
    </div>
    
        <script>
            var menupos = 'left';
            $("#siteinfo-postsnum").html(postsnum);
        </script>
    
    <script>
        let commentsHide = false
    </script>
    <!------ 根据自定义配置声明变量👆 --------------------->


    <!----------根据自定义配置设置图标信息👇---------->
    <script>
        var icondict = new Array();
    </script>
    
        
            <script>
                var iconname = "首页";
                var iconurl = "Home";
                icondict[iconname] = iconurl;
            </script>
        
            <script>
                var iconname = "关于";
                var iconurl = "About";
                icondict[iconname] = iconurl;
            </script>
        
            <script>
                var iconname = "友人帐";
                var iconurl = "Friends";
                icondict[iconname] = iconurl;
            </script>
        
            <script>
                var iconname = "归档";
                var iconurl = "Archive";
                icondict[iconname] = iconurl;
            </script>
        
            <script>
                var iconname = "标签";
                var iconurl = "Tag";
                icondict[iconname] = iconurl;
            </script>
        
            <script>
                var iconname = "说说";
                var iconurl = "Talk";
                icondict[iconname] = iconurl;
            </script>
        
    
    <!----------根据自定义配置设置图标信息👆---------->
</body>

<script src="https://hzqyihui.github.io/media/share/dist/Share.js"></script>
<!-- 页面pjax测试 -->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery.pjax/2.0.1/jquery.pjax.js"></script>
<!--确保jQuery已经在此之前加载-->
<!-- <script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script> -->
<script src="https://hzqyihui.github.io/media/js/all-pjax.js"></script>
<script>
    //-------------------------------说说功能👇--------------------------------------
    let talksall = [];
    let talks = [];
    let talkindex = 0;
    get();

    function get() {
        var t = JSON.parse('[]');
        talkindex = t.length - 1;
        for (var i = 0; i <= t.length - 1; i++) {
            var d = {};
            d["time"] = t[i].time;
            d["author"] = t[i].author;
            d["text"] = t[i].text;
            d["img"] = t[i].img;
            talksall.push(d);
        }
    }

    function add() {
        for (var i = talkindex; i >= 0 && i > talkindex - 3; i--) {
            talks.push(talksall[i]);
        }
        talkindex = (talkindex - 3) >= 0 ? (talkindex - 3) : -1;
        if (talkindex < 0) $("#getmorebt").hide();
        show();
    }

    function show() {
        var talkT = document.getElementById("talkContainer");
        talkT.innerHTML = "";
        for (var i = 0; i < talks.length; i++) {
            if (talks[i].img != '') {
                talkT.innerHTML += '\
            <div class="talk" v-for="t in talks"> \
                <span data-fancybox="images" href="' + talks[i].img + '"><img src="' + talks[i].img + '" class="talkimg"></span> \
                <div class="ainfo">\
                    <div class="ainfo-intro">\
                        <div class="author">' + talks[i].author + '</div>·\
                        <div class="time">' + talks[i].time + '</div>\
                    </div>\
                </div>\
                <div class="talkcontent">' + talks[i].text + '\
                </div\>\
            ';
            } else {
                talkT.innerHTML += '\
            <div class="talk" v-for="t in talks"> \
                <div class="ainfo">\
                    <div class="ainfo-intro">\
                        <div class="author">' + talks[i].author + '</div>·\
                        <div class="time">' + talks[i].time + '</div>\
                    </div>\
                </div>\
                <div class="talkcontent">' + talks[i].text + '\
                </div\>\
            ';
            }
        }
    }
    //-------------------------------说说功能👆--------------------------------------
</script>

<!---->
<script>
    function replaceAvatar() {
        twikoo_avatar = $(".tk-avatar-img");
        for (var i = 0; i < twikoo_avatar.length; i++) {
            var asrc = twikoo_avatar.eq(i).attr('src');
            if (asrc.search('cn.gravatar.com') != -1) {
                twikoo_avatar.eq(i).attr('src', 'https://hzqyihui.github.io/media/images/comavatar.png');
            }
        }
    }

    function showWechat() {
        var wechat = '';
        alert("博主微信号：" + wechat);
        return false;
    }
</script>

<script>
    /**
     * https://github.com/tangkaichuan/gridea-search
     */
    // 检查缓存是否最新
    function checkCache() {
        var caches_postsnum = localStorage.getItem("postsnum");
        var pt = document.getElementById("side-posttitle").innerHTML;
        pt = pt.replace(/\s+/g, '').replace(/<script>.*?<\/script>/gi, "")
        var ptlen = pt.length;
        var ptlen_storage = localStorage.getItem("poststitlelen");
        if (caches_postsnum != postsnum || ptlen != ptlen_storage) {
            console.log("更新缓存");
            return false
        }
        return true;
    }

    (function () {
        var CACHES = checkCache()
        if (!CACHES) {
            var NOW = Date.now()
            var API_CONTENT = '../api-content/index.html' + '?_=' + NOW
            preload(API_CONTENT);
            getContents(show_getContentresult);
        }

        function show_getContentresult(data) {
            console.log("获取成功");
            var postslen = data["posts"].length;
            localStorage.setItem('postsnum', postslen);
            var poststitlelen = 0;
            var pt = document.getElementById("side-posttitle").innerHTML;
            pt = pt.replace(/\s+/g, '').replace(/<script>.*?<\/script>/gi, "");
            localStorage.setItem('poststitlelen', pt.length);
        }



        // preload
        function preload(url) {
            var preloadLink = document.createElement('link')
            preloadLink.href = url
            preloadLink.rel = 'preload'
            preloadLink.as = 'fetch'
            preloadLink.crossOrigin = 'anonymous'
            document.head.appendChild(preloadLink)
        }

        // 异步 GET 请求
        function get(obj) {
            var xhr = new XMLHttpRequest()
            xhr.open('get', obj.url, true)
            xhr.send(null)
            xhr.onreadystatechange = function () {
                // 异步请求：响应状态为4，数据加载完毕
                if (xhr.readyState === 4) {
                    if (xhr.status === 200) {
                        obj.success(xhr.responseText)
                    } else {
                        obj.error(xhr.status)
                    }
                }
            }
        }

        // 获取博客全文 api
        function getContents(callback) {
            if (CACHES) {
                callback(CACHES.contents)
            } else {
                get({
                    url: API_CONTENT,
                    success: function (data) {
                        callback(JSON.parse(data));
                        localStorage.setItem('ContentsCache', data);
                        getStorageContent();
                    }
                })
            }
        }
    })()
    //------------------------核心功能--pjax全局渲染👇-------------------
    let talkinit = false;
    $(document).pjax('a[data-pjax]', '#main', {
        fragment: '#main',
        timeout: 8000
    }).on('pjax:complete', function () {
        //代码块高亮渲染
        document.querySelectorAll('pre code').forEach((block) => {
            hljs.highlightBlock(block);
        });
        //文章热度
        if(postnumChoice){
            getHotnum();
        }
        //文章索引
        toginit();
        //清空搜索栏
        if (searchChoice) {
            searchInit();
            searchInput.value = "";
        }
        var pl = window.location.pathname;
        //说说更新
        if (pl.search("talk") != -1 && !talkinit) {
            add();
            talkinit = true;
        } else if (pl.search("talk") != -1) {
            show();
        }
        if (pl.search("post") != -1) {
            if (shareChoice)
                shareInit();
            if (donateChoice)
                donateInit();
            if ("valine" == "default"&&!commentsHide) {
                $("#comment").hide()
                commentsHide = true
            }
            lazyload();
            codeinit();
            if ("valine" == "twikoo") {
                //twikoo头像更换
                setTimeout(replaceAvatar, 3000);
                setTimeout(replaceAvatar, 8000); //部分博主站点速度加载过慢，再添加一个延迟
            }
        }
        if (btstate == true)
            dropdown();
    }).on('pjax:start', function () {
        $(".pjaxloading").fadeIn(50);
    }).on('pjax:end', function () {
        $(".pjaxloading").fadeOut(50);
    });
    //------------------------核心功能--pjax全局渲染👆-------------------

    //-------------------------------------------------搜索
    // 获取搜索框、搜索按钮、清空搜索、结果输出对应的元素
    if (searchChoice) {
        var searchInput = document.querySelector('.search-input');
        var searchResults = document.querySelector('.search-results');
    }
    // 申明保存文章的标题、链接、内容的数组变量
    var searchValue = '',
        arrItems = [],
        arrLinks = [],
        arrTitles = [],
        arrContents = [],
        arrResults = [],
        indexItem = [],
        itemLength = 0;
    var tmpDiv = document.createElement('div');
    tmpDiv.className = 'result-item';


    function getStorageContent() {
        var data = localStorage.getItem('ContentsCache');
        data = JSON.parse(data);
        posts = data["posts"];
        for (var i = 0; i < posts.length; i++) {
            arrLinks[i] = posts[i].link;
            arrTitles[i] = posts[i].title;
            arrContents[i] = posts[i].content;
            itemLength++;
        }
    }
    if (checkCache())
        getStorageContent();
    // 输入框内容变化后就开始匹配，可以不用点按钮
    // 经测试，onkeydown, onchange 等方法效果不太理想，
    // 存在输入延迟等问题，最后发现触发 input 事件最理想，
    // 并且可以处理中文输入法拼写的变化
    searchInput.oninput = function () {
        setTimeout(searchConfirm, 0);
    }
    searchInput.onfocus = function () {
        searchResults.style.display = 'block';
    }

    function searchConfirm() {
        if (searchInput.value == '') {
            searchResults.style.display = 'none';
        } else if (searchInput.value.search(/^\s+$/) >= 0) {
            // 检测输入值全是空白的情况
            searchInit();
            var itemDiv = tmpDiv.cloneNode(true);
            itemDiv.innerText = '请输入有效内容...';
            searchResults.appendChild(itemDiv);
        } else {
            // 合法输入值的情况
            searchInit();
            searchValue = searchInput.value;
            // 在标题、内容中查找
            searchMatching(arrTitles, arrContents, searchValue);
        }
    }

    // 每次搜索完成后的初始化
    function searchInit() {
        arrResults = [];
        indexItem = [];
        searchResults.innerHTML = '';
        searchResults.style.display = 'block';
    }

    function searchMatching(arr1, arr2, input) {
        // 忽略输入大小写
        input = new RegExp(input, 'i');
        var step = 10;
        // 在所有文章标题、内容中匹配查询值
        for (i = 0; i < itemLength; i++) {
            var indexContent = arr2[i].search(input);
            //标题匹配
            if (arr1[i].search(input) != -1) {
                indexItem.push(i); // 保存匹配值的索引
                if (indexContent != -1) {
                    startindex = (indexContent - step) >= 0 ? (indexContent - step) : 0;
                    var searchcontent = arr2[i].slice(indexContent - step, indexContent + 5)
                    arrResults.push("....." + searchcontent + ".....");
                } else
                    arrResults.push("");
            }
            //内容匹配
            else if (indexContent != -1) {
                indexItem.push(i); // 保存匹配值的索引

                startindex = (indexContent - step) >= 0 ? (indexContent - step) : 0;
                var searchcontent = arr2[i].slice(indexContent - step, indexContent + 5)
                arrResults.push("....." + searchcontent + ".....");
            }
        }

        // 输出总共匹配到的数目
        var totalDiv = tmpDiv.cloneNode(true);
        totalDiv.innerHTML = '<b>总匹配：' + indexItem.length + ' 项<hr></b>';
        searchResults.appendChild(totalDiv);

        // 未匹配到内容的情况
        if (indexItem.length == 0) {
            var itemDiv = tmpDiv.cloneNode(true);
            itemDiv.innerText = '未匹配到内容...';
            searchResults.appendChild(itemDiv);
        }

        // 将所有匹配内容进行组合
        for (i = 0; i < arrResults.length; i++) {
            var itemDiv = tmpDiv.cloneNode(true);
            itemDiv.innerHTML = '<a data-pjax class="searchresults" href="' + arrLinks[indexItem[i]] + '"><b>[' +
                arrTitles[indexItem[i]] +
                ']</b><p>' + arrResults[i] + '</p></a><hr />';
            searchResults.appendChild(itemDiv);
        }
    }
</script>



<!--------------------- 菜单栏图标加载功能👇 ----------------------->
<script>
var menulist = $(".menuicon");
var menulength = menulist.length;
for (var i = 0; i < menulength; i++) {
    var altname = menulist.eq(i).attr("alt");
    var iconurl = icondict[altname];
    if (iconurl == undefined || iconurl == '')
        continue;
    if (iconurl == 'Home') {
        menulist.eq(i).attr("src", "https://hzqyihui.github.io/media/images/Home.png");
menulist.eq(i).show();
} else if (iconurl == 'Archive') {
menulist.eq(i).attr("src", "https://hzqyihui.github.io/media/images/Archive.png");
menulist.eq(i).show();
} else if (iconurl == 'Tag') {
menulist.eq(i).attr("src", "https://hzqyihui.github.io/media/images/Tag.png");
menulist.eq(i).show();
} else if (iconurl == 'About') {
menulist.eq(i).attr("src", "https://hzqyihui.github.io/media/images/About.png");
menulist.eq(i).show();
} else if (iconurl == 'Talk') {
menulist.eq(i).attr("src", "https://hzqyihui.github.io/media/images/Talk.png");
menulist.eq(i).show();
} else if (iconurl == 'Friends') {
menulist.eq(i).attr("src", "https://hzqyihui.github.io/media/images/Friends.png");
menulist.eq(i).show();
} else if (iconurl == 'Fly') {
menulist.eq(i).attr("src", "https://hzqyihui.github.io/media/images/wind.png");
menulist.eq(i).show();
} else {
menulist.eq(i).attr("src", iconurl);
menulist.eq(i).show();
}
}
</script>
<!--------------------- 菜单栏图标加载功能👆 ----------------------->

<script>
    //--------------------bber-onetalk加载👇--------------------------------
    function bberonetalkLoad(){
        bberjsonurl = '';
        if ( $("#bber-talk").length > 0 ) {
        jsonUrl = bberjsonurl
        $.getJSON(jsonUrl+"?t="+Date.parse( new Date()),function(res){
        var bberHtml = ''
        $.each(res.data, function(i, item){
            d = new Date(item.date)
            date = d.getFullYear()+'/'+(d.getMonth()+1)+'/'+d.getDate() +' '+d.getHours()+':'+d.getMinutes()+':'+d.getSeconds()
            dataTime = '<span class="datatime">'+date+'</span>'
            bberHtml += '<li class="item item-'+(i+1)+'">'+dataTime+'： <a data-pjax href="https://hzqyihui.github.io/bber">'+item.content+'</a></li>'
        });
        $('#bber-talk').append('<span class="index-talk-icon"><svg viewBox="0 0 1024 1024" width="21" height="21"><path d="M184.32 891.667692c-12.603077 0-25.206154-2.363077-37.809231-7.876923-37.021538-14.966154-59.864615-49.624615-59.864615-89.009231v-275.692307c0-212.676923 173.292308-385.969231 385.969231-385.969231h78.76923c212.676923 0 385.969231 173.292308 385.969231 385.969231 0 169.353846-137.846154 307.2-307.2 307.2H289.083077l-37.021539 37.021538c-18.904615 18.116923-43.323077 28.356923-67.741538 28.356923zM472.615385 195.347692c-178.018462 0-322.953846 144.935385-322.953847 322.953846v275.692308c0 21.267692 15.753846 29.144615 20.48 31.507692 4.726154 2.363077 22.055385 7.876923 37.021539-7.08923l46.473846-46.473846c6.301538-6.301538 14.178462-9.452308 22.055385-9.452308h354.461538c134.695385 0 244.184615-109.489231 244.184616-244.184616 0-178.018462-144.935385-322.953846-322.953847-322.953846H472.615385z"></path><path d="M321.378462 512m-59.076924 0a59.076923 59.076923 0 1 0 118.153847 0 59.076923 59.076923 0 1 0-118.153847 0Z"></path><path d="M518.301538 512m-59.076923 0a59.076923 59.076923 0 1 0 118.153847 0 59.076923 59.076923 0 1 0-118.153847 0Z"></path><path d="M715.224615 512m-59.076923 0a59.076923 59.076923 0 1 0 118.153846 0 59.076923 59.076923 0 1 0-118.153846 0Z"></path></svg></span><ul class="talk-list">'+bberHtml+'</ul>')
        //Lately({ 'target': '#bber-talk .datatime' });
        });
        function Roll (){
        var list_li = $('.talk-list li'),cur_li = list_li.first(),last_li = list_li.last();
        last_li.after(cur_li);
        };
        setInterval(Roll,3000);
    }
    }
  //--------------------bber-onetalk加载👆--------------------------------
</script>

<script>
    var ClicksideState = 1
    var cur_readingmode = false
    function readingmode(){
        if (!cur_readingmode){
            if(menupos == 'left'){
                if(ClicksideState==1)
                menu_openclose1()
            }
            $("#tab1").fadeOut(50)
            $("#bg").fadeOut(50)
            $(".navbar").fadeOut(50)
            $(".markdownIt-TOC li a").css("color","black")
            cur_readingmode = true
        }else{
            if(menupos == 'left'){
                if(ClicksideState==0)
                    menu_openclose1()
            }
            $("#tab1").fadeIn(50)
            $("#bg").fadeIn(50)
            $(".navbar").fadeIn(50)
            $(".markdownIt-TOC li a").css("color","antiquewhite")
            cur_readingmode = false  
        }
    }
</script>


<!----夜间模式👇-->
<script>
    var moonlightState = false
    function moonlight(){
        if(!moonlightState){
            $("#bg").fadeOut(200)
            $('body').css("background","rgba(0,0,0,0.8)")
            $(".markdownIt-TOC li a").css("color","white")
            $(".text p, .text ul").css("color","white")
            $("#articlecontent").css("color","white")
            $(".post-copyright").css("background","rgba(10,10,10,0.5)")
            $('blockquote').css("background","rgba(10,10,10,0.6)")
            $("#articlecontent").css("background","rgba(10,10,10,0.5)")
            moonlightState = true
            $(".moon").attr("src","https://hzqyihui.github.io/media/images/sun.png")
        }else{
            $("#bg").show()
            $(".markdownIt-TOC li a").css("color","antiquewhite")
            $(".text p, .text ul").css("color","rgba(0, 0, 0, 0.7)")
            $("#articlecontent").css("color","black")
            $(".post-copyright").css("background","#f9f9f9")
            $('blockquote').css("background","#eff8f0")
            $("#articlecontent").css("background","white")
            $(".moon").attr("src","https://hzqyihui.github.io/media/images/moon.png")
            $('body').css("background","white")
            moonlightState = false
        }
    }
</script>
<!----夜间模式👆--></div>
                <!--------------- pc端菜单栏👆 ---------------->
                <div id="tab1" class="tab">
                    <div class="bars">
                        <span></span>
                        <span></span>
                        <span></span>
                    </div>
                    <div class="close"></div>
                </div>
                <div class="col-md-1 col-lg-3"></div>
                <!----------- 移动端导航栏👇 ----------------->
                <div class="mobilebar"><style>
  .navmobile {
    z-index: 15;
    max-height: 40vh;
    overflow-y: scroll;
    overflow-x: hidden;
  }

  @media screen and (max-width: 1200px) {
    .navbar {
      max-width: 100vw;
    }
  }

  @media screen and (max-width:1200px) and (min-width: 768px) {
    @media (min-width: 768px) {
      .navbar-nav {
        float: right;
        margin: 0;
      }
    }
  }

  @media screen and (max-width:768px) {
    .mbapspan {
      padding: 0;
    }
  }
</style>
<div class="pjaxloading"  onclick="pjaxloadingClose()">
  <div class="loadingbackground"></div>
  <div id="loading">
    <div class="loading">
    </div>
  </div>
</div>
<nav class="navbar navbar-inverse navbar-fixed-top navmobile">
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#barmenu"
        aria-expanded="false" id="barbutton">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a data-pjax class="navbar-brand" style="color:white" href="https://hzqyihui.github.io">MaxHua&#39;s Note&nbsp;&nbsp;|</a>
      <span class="navbar-brand mbapspan"><i id="mbaplayer" class="fa fa-play-circle-o" aria-hidden="true"
          style="font-size: 28px;top: 12px;position: absolute;" onclick="aplayerPlay();"></i></span>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="barmenu">
      <ul class="nav navbar-nav">
        
        
        <li>
          <a data-pjax href="/" style="color:white">
            首页
          </a>
        </li>
        
        
        
        <li>
          <a data-pjax href="/archives" style="color:white">
            归档
          </a>
        </li>
        
        
        
        <li>
          <a data-pjax href="/tags" style="color:white">
            标签
          </a>
        </li>
        
        
        
        <li>
          <a data-pjax href="/post/about" style="color:white">
            关于
          </a>
        </li>
        
        
        
        <li><a data-pjax href="https://hzqyihui.github.io/talk" style="color:white">说说</a></li>
        
        
          
        <li><a data-pjax href="https://hzqyihui.github.io/friends" style="color:white">友链</a></li>

        
        </ul>
      </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
  </nav>


  <!-- 引入jQuery核心js文件 -->
  <script src="https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js"></script>
  <script>
    let btstate = false;
    var bt = $("#barbutton");
    var bm = $("#barmenu");
    bt.click(function () {
      dropdown();
    })
    function dropdown() {
      console.log(btstate);
      //下拉
      if (btstate == false) {
        bt.removeClass("collapsed");
        bt.attr("aria-expanded", "true");
        bm.attr("aria-expanded", "true")
        bm.fadeIn(700);
        btstate = true;
      }
      else {
        bt.addClass("collapsed");
        bt.attr("aria-expanded", "false");
        bm.removeClass("in");
        bm.hide();
        bm.attr("aria-expanded", "false");
        btstate = false;
      }
    }
  </script> 
                <!----------- 移动端导航栏👆 ----------------->
                </div>
                <div id="main" class="col-xs-12 col-sm-12 col-md-12 col-lg-7">
                    <!-- 移动端 -->
                    <div class="mobilebar">
                        <!-- 移动端欢迎页 -->
<div class="welcome">
    <div class="avatar-border">
        <img src="https://hzqyihui.github.io/images/avatar.png?v=1665303694187" class="avatar">
    </div>
    <span class="mobiledescribtion"></span>
</div>


<div id="mobilebgurl" style="display:none">/media/images/custom-mobilebgimage.jpeg</div>

<script>
    var welcome = $('.welcome');
    var bgurl = document.getElementById("mobilebgurl").innerHTML;
    for (var i = 0; i < 3; i++)
        bgurl = bgurl.replace("\\", "/");
    welcome.css("background", "url('" + bgurl + "')");
    var mobiledes = document.querySelector(".mobiledescribtion");
    var text = "当能力和欲望不匹配时，人会极度痛苦。";
    // 当前显示第几个字
    var mobilecharIndex = 1;
    // 每个字显示间隔默认是500毫秒
    var mobiledelta = 500;

    // 记录动画执行开始时间
    var mobilestart = null;
    // 是否为删除动画
    var mobileisDeleting = false;

    // 动画回调函数
    function mobileLoadDes(time) {
        window.requestAnimationFrame(mobileLoadDes);
        // 初始化开始时间
        if (!mobilestart) start = time;
        // 获取时间间隔
        var mobileprogress = time - mobilestart;
        // 每隔一定的时间，打印出一个新的字符
        if (mobileprogress > mobiledelta) {
            // 如果是打字效果
            if (!mobileisDeleting) {
                // 给展示文字的span新增一个字符，使用innerHTML来替换，charIndex自增1，然后返回新的字符串子串
                mobiledes.innerHTML = "&nbsp;" + text.slice(
                    0,
                    ++mobilecharIndex
                );
                mobiledelta = 500 - Math.random() * 400;
            } else {
                // 如果是删除效果，则把文字一个一个减掉
                mobiledes.innerHTML = "&nbsp;" + text.slice(
                    0,
                    mobilecharIndex--
                );
            }
            // 把star更新为当前时间，进行下一个周期
            mobilestart = time;

            // 如果文字已经全部打印完毕
            if (mobilecharIndex === text.length) {
                // 下次开始删除文字
                mobileisDeleting = true;
                // 删除文字的间隔为200毫秒
                mobiledelta = 100;
                // 额外等待1.2秒后再删除
                mobilestart = time + 1000;
            }

            // 如果文字删除完毕
            if (mobilecharIndex < 0) {
                mobileisDeleting = false;
                // 额外增加200毫秒延迟
                mobilestart = time + 200;
            }
        }
    }

    window.requestAnimationFrame(mobileLoadDes);
</script>
                        <img src="" alt="" class="plbg">
<script>
    var bgchoice = "default";
    if(bgchoice=='default')
        var plbgurl = "/media/images/custom-mobileplbgimage.jpeg"
    else  
        var plbgurl = ""
    $(".plbg").attr("src",plbgurl);
    $(".plbg").fadeIn(200);
</script>
                    </div>
                    <div style="display:none">
        <div id="vcomments">
        </div>
        <script>
            var valine = new Valine();
            var curpath = window.location.pathname;
            if (curpath[curpath.length - 1] != '/')
                curpath += '/'
            valine.init({
                el: '#vcomments',
                appId: '6kX8OLncEr2WFzTCkIaiZzkj-gzGzoHsz',
                appKey: 'nSVcrCBD1jAuhDiW4uhz2szQ',
                avatar: 'retro',
                pageSize: 10,
                placeholder: '既然来了，何不畅所欲言呢？',
                recordIP: true,
                path: curpath //[重点] 记得添加path路径
            });
        </script>
        <script type="text/javascript">
            var jrsc = '既然来了，何不畅所欲言呢？';
            jinrishici.load(function (result) {
                // 自己的处理逻辑
                jrsc = result.data.content + "\n「" + result.data.origin.title + "」" + result.data.origin
                    .dynasty + " · " + result.data.origin.author;
            });
        </script>

</div>
                    <link rel="stylesheet" href="https://hzqyihui.github.io/media/css/font-awesome.css">


    <div style="display: none;">
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/springboot-ji-chu-zhi-nan.jpeg</span>
                
            <span name="pltitle">二叉树后序遍历</span>
            <span name="pllink">https://hzqyihui.github.io/post/er-cha-shu-hou-xu-bian-li/</span>
            <span name="pldate">2022-08-02</span>
            <span name="plstats">1 min read</span>
            
                <span name="pltag" alt="二叉树后序遍历">二叉树</span>
                <span name="pltaglink" alt="二叉树后序遍历">https://hzqyihui.github.io/tag/vRNfMZ55S/</span>
            
                <span name="pltag" alt="二叉树后序遍历">栈</span>
                <span name="pltaglink" alt="二叉树后序遍历">https://hzqyihui.github.io/tag/wLRBB3HpzX/</span>
            
                <span name="pltag" alt="二叉树后序遍历">算法</span>
                <span name="pltaglink" alt="二叉树后序遍历">https://hzqyihui.github.io/tag/xR1UcJwiL/</span>
            
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/springboot-ji-chu-zhi-nan.jpeg</span>
                
            <span name="pltitle">二叉树中序遍历</span>
            <span name="pllink">https://hzqyihui.github.io/post/er-cha-shu-zhong-xu-bian-li/</span>
            <span name="pldate">2022-08-02</span>
            <span name="plstats">1 min read</span>
            
                <span name="pltag" alt="二叉树中序遍历">二叉树</span>
                <span name="pltaglink" alt="二叉树中序遍历">https://hzqyihui.github.io/tag/vRNfMZ55S/</span>
            
                <span name="pltag" alt="二叉树中序遍历">栈</span>
                <span name="pltaglink" alt="二叉树中序遍历">https://hzqyihui.github.io/tag/wLRBB3HpzX/</span>
            
                <span name="pltag" alt="二叉树中序遍历">算法</span>
                <span name="pltaglink" alt="二叉树中序遍历">https://hzqyihui.github.io/tag/xR1UcJwiL/</span>
            
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/springboot-ji-chu-zhi-nan.jpeg</span>
                
            <span name="pltitle">二叉树先序遍历</span>
            <span name="pllink">https://hzqyihui.github.io/post/er-cha-shu-xian-xu-bian-li/</span>
            <span name="pldate">2022-08-02</span>
            <span name="plstats">1 min read</span>
            
                <span name="pltag" alt="二叉树先序遍历">二叉树</span>
                <span name="pltaglink" alt="二叉树先序遍历">https://hzqyihui.github.io/tag/vRNfMZ55S/</span>
            
                <span name="pltag" alt="二叉树先序遍历">栈</span>
                <span name="pltaglink" alt="二叉树先序遍历">https://hzqyihui.github.io/tag/wLRBB3HpzX/</span>
            
                <span name="pltag" alt="二叉树先序遍历">算法</span>
                <span name="pltaglink" alt="二叉树先序遍历">https://hzqyihui.github.io/tag/xR1UcJwiL/</span>
            
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/django-kai-fa-ge-ren-bo-ke-xi-tong.png</span>
                
            <span name="pltitle">Dockerfile 的语法使用：</span>
            <span name="pllink">https://hzqyihui.github.io/post/dockerfile-de-yu-fa-shi-yong/</span>
            <span name="pldate">2022-08-01</span>
            <span name="plstats">3 min read</span>
            
                <span name="pltag" alt="Dockerfile 的语法使用：">Docker</span>
                <span name="pltaglink" alt="Dockerfile 的语法使用：">https://hzqyihui.github.io/tag/1F2o_5ZjI/</span>
            
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/git-ming-ling-xing-ri-chang-zhi-ling.jpeg</span>
                
            <span name="pltitle">Nginx重写和转发规则：</span>
            <span name="pllink">https://hzqyihui.github.io/post/nginx-chong-xie-he-zhuan-fa-gui-ze/</span>
            <span name="pldate">2022-06-01</span>
            <span name="plstats">7 min read</span>
            
                <span name="pltag" alt="Nginx重写和转发规则：">Nginx</span>
                <span name="pltaglink" alt="Nginx重写和转发规则：">https://hzqyihui.github.io/tag/Iu7OX0MTe/</span>
            
                <span name="pltag" alt="Nginx重写和转发规则：">Linux</span>
                <span name="pltaglink" alt="Nginx重写和转发规则：">https://hzqyihui.github.io/tag/5hiEmtSm3/</span>
            
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/git-ming-ling-xing-ri-chang-zhi-ling.jpeg</span>
                
            <span name="pltitle">HTTP版本：</span>
            <span name="pllink">https://hzqyihui.github.io/post/http-ban-ben/</span>
            <span name="pldate">2022-05-27</span>
            <span name="plstats">3 min read</span>
            
                <span name="pltag" alt="HTTP版本：">HTTP</span>
                <span name="pltaglink" alt="HTTP版本：">https://hzqyihui.github.io/tag/TuYwxRnw6/</span>
            
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/k98jl6.png</span>
                
            <span name="pltitle">HTTP请求响应过程：</span>
            <span name="pllink">https://hzqyihui.github.io/post/http-qing-qiu-xiang-ying-guo-cheng/</span>
            <span name="pldate">2022-05-27</span>
            <span name="plstats">4 min read</span>
            
                <span name="pltag" alt="HTTP请求响应过程：">HTTP</span>
                <span name="pltaglink" alt="HTTP请求响应过程：">https://hzqyihui.github.io/tag/TuYwxRnw6/</span>
            
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/django-kai-fa-ge-ren-bo-ke-xi-tong.png</span>
                
            <span name="pltitle">TCP和UDP的区别：</span>
            <span name="pllink">https://hzqyihui.github.io/post/tcp-he-udp-de-qu-bie/</span>
            <span name="pldate">2022-05-27</span>
            <span name="plstats">3 min read</span>
            
                <span name="pltag" alt="TCP和UDP的区别：">TCP</span>
                <span name="pltaglink" alt="TCP和UDP的区别：">https://hzqyihui.github.io/tag/sgzI-ACDC/</span>
            
                <span name="pltag" alt="TCP和UDP的区别：">UDP</span>
                <span name="pltaglink" alt="TCP和UDP的区别：">https://hzqyihui.github.io/tag/ZXQ5sqBVW/</span>
            
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/springboot-ji-chu-zhi-nan.jpeg</span>
                
            <span name="pltitle">插入排序</span>
            <span name="pllink">https://hzqyihui.github.io/post/cha-ru-pai-xu/</span>
            <span name="pldate">2022-03-09</span>
            <span name="plstats">2 min read</span>
            
                <span name="pltag" alt="插入排序">算法</span>
                <span name="pltaglink" alt="插入排序">https://hzqyihui.github.io/tag/xR1UcJwiL/</span>
            
                <span name="pltag" alt="插入排序">排序</span>
                <span name="pltaglink" alt="插入排序">https://hzqyihui.github.io/tag/pdiH3xHzU/</span>
            
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/c-stl-kuai-su-shi-yong-shou-ce.jpeg</span>
                
            <span name="pltitle">Go工具-proto文件编译</span>
            <span name="pllink">https://hzqyihui.github.io/post/go-gong-ju-proto-wen-jian-bian-yi/</span>
            <span name="pldate">2022-03-07</span>
            <span name="plstats">4 min read</span>
            
                <span name="pltag" alt="Go工具-proto文件编译">ProtoBuf</span>
                <span name="pltaglink" alt="Go工具-proto文件编译">https://hzqyihui.github.io/tag/srHYxKFKM/</span>
            
                <span name="pltag" alt="Go工具-proto文件编译">Go</span>
                <span name="pltaglink" alt="Go工具-proto文件编译">https://hzqyihui.github.io/tag/1F1mqtQIq/</span>
            
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/springboot-ji-chu-zhi-nan.jpeg</span>
                
            <span name="pltitle">二分查找算法</span>
            <span name="pllink">https://hzqyihui.github.io/post/er-fen-cha-zhao-suan-fa/</span>
            <span name="pldate">2021-09-21</span>
            <span name="plstats">2 min read</span>
            
                <span name="pltag" alt="二分查找算法">查找</span>
                <span name="pltaglink" alt="二分查找算法">https://hzqyihui.github.io/tag/uG2XHX3EL/</span>
            
                <span name="pltag" alt="二分查找算法">算法</span>
                <span name="pltaglink" alt="二分查找算法">https://hzqyihui.github.io/tag/xR1UcJwiL/</span>
            
        
            
                
                    <span name="plfeature">/media/images/custom-postdefaultimage.png</span>
                    
                
            <span name="pltitle">sed命令：</span>
            <span name="pllink">https://hzqyihui.github.io/post/sed-ming-ling/</span>
            <span name="pldate">2021-09-19</span>
            <span name="plstats">3 min read</span>
            
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/python-man-hua-pa-chong-gui-jie-mian-kai-fa.png</span>
                
            <span name="pltitle">xargs命令：</span>
            <span name="pllink">https://hzqyihui.github.io/post/xargs-ming-ling/</span>
            <span name="pldate">2021-09-19</span>
            <span name="plstats">1 min read</span>
            
                <span name="pltag" alt="xargs命令：">Linux</span>
                <span name="pltaglink" alt="xargs命令：">https://hzqyihui.github.io/tag/5hiEmtSm3/</span>
            
                <span name="pltag" alt="xargs命令：">Linux命令</span>
                <span name="pltaglink" alt="xargs命令：">https://hzqyihui.github.io/tag/CVvOiQJP1/</span>
            
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/v2-904505bcf0c424788f6028b8952aa2e7_720w.jpeg</span>
                
            <span name="pltitle">firewall命令（防火墙）：</span>
            <span name="pllink">https://hzqyihui.github.io/post/firewall-ming-ling-fang-huo-qiang/</span>
            <span name="pldate">2021-06-16</span>
            <span name="plstats">2 min read</span>
            
                <span name="pltag" alt="firewall命令（防火墙）：">Linux</span>
                <span name="pltaglink" alt="firewall命令（防火墙）：">https://hzqyihui.github.io/tag/5hiEmtSm3/</span>
            
                <span name="pltag" alt="firewall命令（防火墙）：">Linux命令</span>
                <span name="pltaglink" alt="firewall命令（防火墙）：">https://hzqyihui.github.io/tag/CVvOiQJP1/</span>
            
        
            
                <span name="plfeature">https://oss.maxhua.cn/surface_cover/v2-904505bcf0c424788f6028b8952aa2e7_720w.jpeg</span>
                
            <span name="pltitle">nohup 命令：</span>
            <span name="pllink">https://hzqyihui.github.io/post/nohup-ming-ling/</span>
            <span name="pldate">2021-05-19</span>
            <span name="plstats">1 min read</span>
            
                <span name="pltag" alt="nohup 命令：">Linux</span>
                <span name="pltaglink" alt="nohup 命令：">https://hzqyihui.github.io/tag/5hiEmtSm3/</span>
            
                <span name="pltag" alt="nohup 命令：">Linux命令</span>
                <span name="pltaglink" alt="nohup 命令：">https://hzqyihui.github.io/tag/CVvOiQJP1/</span>
            
        
    </div>

    
    <div id="post-container" class="eleg-allpostscontainer">
        <div v-for="post in postinfo" class="eleg-posts">
            <div v-if="post.elegcontainer=='eleg-postcontainer-left'">
                    <div :class="post.elegcontainer">
                        <img :src="post.feature" alt="" :class="post.imgclass">
                        
                        <img class="eleg-swordsmen-left" src="https://hzqyihui.github.io/media/images/swordsmenleft.webp" alt="">
                        
                        <div class="eleg-info">
                            <span class="eleg-title">{{post.title}}</span>
                            <div style="margin-top:15px;">
                                <span class="postdate eleg-date"><i class="fa fa-calendar"></i>{{post.date}}</span>
                                <span class="poststatus postdate eleg-stats"><i class="fa fa-clock-o"></i> {{post.stats}}</span>
                            </div>
                            <div style="margin-top:50px">
                                <a :href="post.link" class="eleg-btn" data-pjax>阅读全文</a>
                            </div>
                        </div>
                    </div>
                    <div class='eleg-tags'>
                        <div v-for="(tag,i) in post.tags">
                            <div class="posttag">
                                <a data-pjax :href="post.taglink[i]" class="postlink eleg-postlink">
                                    <i class="fa fa-tag"></i>{{tag}}
                                </a>
                            </div>
                        </div>
                    </div>
            </div>
            <div v-else>
                    <div :class="post.elegcontainer">
                        <div class="eleg-info">
                            <span class="eleg-title">{{post.title}}</span>
                            <div style="margin-top:15px;">
                                <span class="postdate eleg-date"><i class="fa fa-calendar"></i>{{post.date}}</span>
                                <span class="poststatus postdate eleg-stats"><i class="fa fa-clock-o"></i> {{post.stats}}</span>
                            </div>
                            <div style="margin-top:50px">
                                <a :href="post.link" class="eleg-btn" data-pjax>阅读全文</a>
                            </div>
                        </div>
                        
                        <img class="eleg-swordsmen" src="https://hzqyihui.github.io/media/images/swordsmen.webp" alt="">
                        
                        <img :src="post.feature" alt="" :class="post.imgclass">
                    </div>
                    <div class='eleg-tags'>
                        <div v-for="(tag,i) in post.tags">
                            <div class="posttag">
                                <a data-pjax :href="post.taglink[i]" class="postlink eleg-postlink">
                                    <i class="fa fa-tag"></i>{{tag}}
                                </a>
                            </div>
                        </div>
                    </div>
            </div>
        </div>
    </div>

    
    <script>
    var app2 = new Vue({
      el: '#post-container',
      mounted:function(){
        this.getpostInfo();
      },
      methods:{
         getpostInfo:function(){
             var plflist = $("span[name='plfeature']");
             var pltlist = $("span[name='pltitle']");
             var plllist = $("span[name='pllink']");
             var pldlist = $("span[name='pldate']");
             var plslist = $("span[name='plstats']");
             var pltaglist = $("span[name='pltag']");
             var pltaglinklist = $("span[name='pltaglink']")
             for(var i=0;i<this.pagesize&&i<plflist.length;i++){
                 var d = {};
                 var tags = []
                 var taglink = []
                 d["feature"] = plflist.eq(i).html();
                 d["title"] = pltlist.eq(i).html();
                 d["link"] = plllist.eq(i).html();
                 d["date"] = pldlist.eq(i).html();
                 d['stats'] = plslist.eq(i).html();
                 for(var j=0;j<pltaglist.length;j++){
                     if(pltaglist.eq(j).attr('alt')==d['title'])
                        tags.push(pltaglist.eq(j).html())
                 }
                 d["tags"] = tags;
                 for(var j=0;j<pltaglinklist.length;j++){
                    if(pltaglinklist.eq(j).attr('alt')==d['title'])
                        taglink.push(pltaglinklist.eq(j).html())
                 }
                 d["taglink"] = taglink
                 if(i%2==0)
                 {
                     d['elegcontainer'] = 'eleg-postcontainer-left';
                     d['imgclass'] = 'eleg-img-left'
                 }
                 else{
                    d['elegcontainer'] = 'eleg-postcontainer-right';
                    d['imgclass'] = 'eleg-img-right' 
                 }
                 this.postinfo.push(d);
             }
         }
      },
      data: {
        pagesize: "15",
        postinfo:[],
      }
    })
    </script>


                    <div>
                        <div class="pcpagi">
    <div class="pagi">
        <ul>
            
            <li><a data-pjax href="https://hzqyihui.github.io/page/2/" style="width:100px" id="prev">上一页</a></li>
            
                    <li><a id="page1">1</a></li>
                    <li><a id="page2" class="active">2</a></li>
                    <li><a id="page3">3</a></li>
                    
            <li><a data-pjax href="https://hzqyihui.github.io/page/4/" style="width:100px" id="next">下一页</a></li>
            
                </ul>
    </div>
</div>

<div id="pagination-prev" style="display:none"> https://hzqyihui.github.io/page/2/
</div>
<div id="pagination-next" style="display:none"> https://hzqyihui.github.io/page/4/</div>

<div class="pagination-container">
    
    <a data-pjax href="https://hzqyihui.github.io/page/2/" class="mobile-prevpage">上一页</a>
      
    
    <a data-pjax href="https://hzqyihui.github.io/page/4/" class="mobile-nextpage">下一页</a>
    
</div>

<script>
    var prevstr = document.getElementById("pagination-prev").innerHTML;
    var nextstr = document.getElementById("pagination-next").innerHTML;
    var page1 = document.getElementById("page1");
    var page2 = document.getElementById("page2");
    var page3 = document.getElementById("page3");
    page1.innerHTML = '-';
    page2.innerHTML = '1';
    page3.innerHTML = '-';
    if (prevstr.length > 5) {
        if (prevstr.indexOf("page/") != -1) {
            var prevnum = parseInt(prevstr.split("page/")[1]);
            page1.innerHTML = prevnum;
            page2.innerHTML = prevnum + 1;
        } else {
            page1.innerHTML = 1;
            page2.innerHTML = 2;
        }
    }
    if (nextstr.indexOf("page/") != -1) {
        var nextnum = parseInt(nextstr.split("page/")[1]);
        page3.innerHTML = nextnum;
        page2.innerHTML = nextnum - 1;
    }
</script>
                    </div>
                </div>
                <div class="col-md-1 col-lg-2"></div>
                
                <!-- ----------------左侧菜单栏html 👆-------------------------------------->
                <!------------------ 顶部菜单栏html👇--------->
                 
                <!------------------ 顶部菜单栏html👆--------->
                </div>
            </div>
            <div id="bg">
            </div>
            <!------- 背景图加载方式👇----- -->
            <div id="bgchoice" style="display: none">default
            </div>
            
            <div id="bgurl" style="display:none">/media/images/custom-bgimage.jpg</div>
            
            <!------- 背景图加载方式👆----- --> 
        <div id="landlord">
            <div class="message" style="opacity:0"></div>
            <canvas id="live2d" width="240" height="250" class="live2d"></canvas>
        </div>
    </div>
        
            <head>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css">
</head>

<body>
    <div class="miniMode">
        <meting-js id="myaplayer" server="netease" type="playlist" fixed="true" order="default" muted="muted">
        </meting-js>
    </div>
</body>


<script src="https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js"></script>
<script>
    function aplayerInit() {
        var aplayerid = "2025151208";
        var aplayerserver = "netease";
        var aplayerorder = "random";
        var aplayerautoplay = "false";
        var aplayer = $("#myaplayer");
        aplayer.attr("server", aplayerserver);
        aplayer.attr("id", aplayerid);
        aplayer.attr("order", aplayerorder);
        if (aplayerautoplay == "true")
            aplayer.attr("autoplay", "true");
    }
    aplayerInit();
</script>

<script src="https://cdn.jsdelivr.net/gh/850552586/ericamcdn@0.1/js/Aplayer.min.js"></script>
<!-- require MetingJS -->
<script src="https://cdn.jsdelivr.net/npm/meting@2/dist/Meting.min.js"></script>

<script>
    function aplayerbtnInit() {
        var player = document.querySelectorAll('meting-js')[0].aplayer;
        if(player==undefined)return false;
        player.lrc.hide();
        var mbabtn = $("#mbaplayer");
        if (player.paused == false) {
            mbabtn.removeClass("fa-play-circle-o");
            mbabtn.addClass("fa-pause-circle");
        } else {
            mbabtn.addClass("fa-play-circle-o");
            mbabtn.removeClass("fa-pause-circle");
        }
    }

    function aplayerPlay() {
        var player = document.querySelectorAll('meting-js')[0].aplayer;
        var mbabtn = $("#mbaplayer");
        if (player.paused == true) {
            player.play();
            mbabtn.removeClass("fa-play-circle-o");
            mbabtn.addClass("fa-pause-circle");
        } else {
            player.pause();
            mbabtn.addClass("fa-play-circle-o");
            mbabtn.removeClass("fa-pause-circle");
        }
    }
</script>
        
    <div id="domainname" style="display:none">https://hzqyihui.github.io
        </div>

<!-------------------- live2d功能👇 --------------------------->
    
        <script type="text/javascript">
            var message_Path = '/live2d/'
            var home_Path = document.getElementById("domainname").innerHTML + "/"; //此处修改为你的域名，必须带斜杠
        </script>
        <script type="text/javascript" src="https://hzqyihui.github.io/media/js/live2d.js"></script>
        <script type="text/javascript" src="https://hzqyihui.github.io/media/live2d/js/message.js"></script>
        <script type="text/javascript">
            loadlive2d("live2d", "https://hzqyihui.github.io/media/live2d/assets/tororo.model.json");
        </script>
    
<!-------------------- live2d功能👆 --------------------------->

<!------------ 加载全局背景图功能👇（开始时没有写好，这功能有点鸡肋/(ㄒoㄒ)/~~） -->
<script>
    var bgchoice = "default"
    var bg = $('#bg');
    var bgurl = document.getElementById("bgurl").innerHTML;
    if (bgchoice == 'default')
    {
        for (var i = 0; i < 3; i++)
            bgurl = bgurl.replace("\\", "/");
        bgurl = "https://hzqyihui.github.io/" + bgurl;
    }
    bg.css("background", "url('" + bgurl + "')");

    window.onload = function () {
        aplayerbtnInit();
    }
</script>
<!------------ 加载全局背景图功能👆（开始时没有写好，这功能有点鸡肋/(ㄒoㄒ)/~~） -->

<script src="https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js"></script>

        <script src="https://hzqyihui.github.io/media/js/index.js"></script>
        
</body>
</html>